#pragma once

#include <vector>
#include "../Utilities/utilities.h"
#include "Defines.h"

class cResourceManager;

class cObject
{
public:
	int			m_ID;
	cShader		*m_pShader;
	cModel		*m_pModel;
	std::vector <cTexture*> m_vTextures;
	Vector3		m_position;
	Vector3		m_rotate;
	Vector3		m_scale;

	Matrix		m_maWorld;

	Vector3		m_positionNext;
	Vector3		m_rotateNext;
	Vector3		m_scaleNext;

public:
	cObject();
	cObject(int id, cShader *pShader, cModel *pModel, std::vector<cTexture*> vTextures,
			Vector3 position, Vector3 rotate, Vector3 scale, Matrix& maWorld);
	virtual	~cObject();

	void Init();
	void Update(float deltaTime);
	void Render();
	void ComputeWorldMatrix(float deltaTime = 0.05f);
	void SetTranslate(Vector3 &position);
	void SetRotate(Vector3 &rotate);
	void SetScale(Vector3 &scale);
};
